﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;

using ServiceDeskUNAB.Modelo;

namespace ServiceDeskUNAB.Controlador
{
    public class IncidenciaControlador
    {
            private static IncidenciaControlador instance;


        private IncidenciaControlador()
        {           
        }

        public static IncidenciaControlador Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new IncidenciaControlador();
                }
                return instance;
            }
        }

        public bool Ingresar(Incidencia inci)
        {
           
            try
            {
                SqlCommand com = new SqlCommand();


                com.CommandText = "INSERT INTO Incidencia" +
                    "(Estado_Incidencia, Responsable_Incidencia, Proyecto_Incidencia, Creador_Incidencia, Titulo_Incidencia, Detalles_Incidencia, Reprodubicibilidad_Incidencia, Urgencia_Incidencia, Severidad_Incidencia, FechaCreacion_Incidencia, UltimaModificacion_Incidencia, Prioridad_Incidencia, SistemaOperativo_Incidencia)" + "VALUES" +
                    "(@Estado_Incidencia, @Responsable_Incidencia, @Proyecto_Incidencia, @Creador_Incidencia, @Titulo_Incidencia, @Detalles_Incidencia, @Reprodubicibilidad_Incidencia, @Urgencia_Incidencia, @Severidad_Incidencia, @FechaCreacion_Incidencia, @UltimaModificacion_Incidencia, @Prioridad_Incidencia, @SistemaOperativo_Incidencia)";

                com.Parameters.AddWithValue("@Estado_Incidencia", inci.EstadoIncidencia);
                com.Parameters.AddWithValue("@Responsable_Incidencia", inci.EncargadoIncidencia);
                com.Parameters.AddWithValue("@Proyecto_Incidencia", inci.ProyectoIncidencia);
                com.Parameters.AddWithValue("@Creador_Incidencia", inci.CreadorIncidencia);
                com.Parameters.AddWithValue("@Titulo_Incidencia", inci.TituloIncidencia);
                com.Parameters.AddWithValue("@Detalles_Incidencia", inci.DetallesIncidencia);
                com.Parameters.AddWithValue("@Reprodubicibilidad_Incidencia", inci.ReproducibilidadIncidencia);
                com.Parameters.AddWithValue("@Urgencia_Incidencia", inci.UrgenciaIncidencia);
                com.Parameters.AddWithValue("@Severidad_Incidencia", inci.SeveridadIncidencia);
                com.Parameters.AddWithValue("@FechaCreacion_Incidencia", inci.FechaCreacionIncidencia);
                com.Parameters.AddWithValue("@UltimaModificacion_Incidencia", DateTime.Now);
                com.Parameters.AddWithValue("@Prioridad_Incidencia", inci.PrioridadIncidencia);
                com.Parameters.AddWithValue("@SistemaOperativo_Incidencia", inci.SistemaOperativoIncidencia);
                

                com.Connection = Conexion.Instance.Con;
                SqlDataReader ejecutar = com.ExecuteReader();
                Conexion.Instance.Con.Close();
                return true;
            }
            catch (Exception e)
            {
                Conexion.Instance.Con.Close();
                Console.WriteLine(e.Message);
                return false;
                throw;
            }
    
        }
    public bool Modificar(Incidencia inci)
        {
            try
            {
                SqlCommand com = new SqlCommand();


                com.CommandText = "UPDATE Incidencia " +
                    "SET Estado_Incidencia = @Estado_Incidencia, Responsable_Incidencia = @Responsable_Incidencia, Proyecto_Incidencia = @Proyecto_Incidencia, Creador_Incidencia = @Creador_Incidencia, Titulo_Incidencia = @Titulo_Incidencia, Detalles_Incidencia = @Detalles_Incidencia, Reprodubicibilidad_Incidencia = @Reprodubicibilidad_Incidencia, Urgencia_Incidencia = @Urgencia_Incidencia, Severidad_Incidencia = @Severidad_Incidencia, FechaCreacion_Incidencia = @FechaCreacion_Incidencia, UltimaModificacion_Incidencia = @UltimaModificacion_Incidencia, Prioridad_Incidencia = @Prioridad_Incidencia, SistemaOperativo_Incidencia = @SistemaOperativo_Incidencia" +
                    "WHERE ID_Incidencia = @ID_Incidencia";


                com.Parameters.AddWithValue("@ID_Incidencia", inci.IdIncidencia);
                com.Parameters.AddWithValue("@Estado_Incidencia", inci.EstadoIncidencia);
                com.Parameters.AddWithValue("@Responsable_Incidencia", inci.EncargadoIncidencia);
                com.Parameters.AddWithValue("@Proyecto_Incidencia", inci.ProyectoIncidencia);
                com.Parameters.AddWithValue("@Creador_Incidencia", inci.CreadorIncidencia);
                com.Parameters.AddWithValue("@Titulo_Incidencia", inci.TituloIncidencia);
                com.Parameters.AddWithValue("@Detalles_Incidencia", inci.DetallesIncidencia);
                com.Parameters.AddWithValue("@Reprodubicibilidad_Incidencia", inci.ReproducibilidadIncidencia);
                com.Parameters.AddWithValue("@Urgencia_Incidencia", inci.UrgenciaIncidencia);
                com.Parameters.AddWithValue("@Severidad_Incidencia", inci.SeveridadIncidencia);
                com.Parameters.AddWithValue("@FechaCreacion_Incidencia", inci.FechaCreacionIncidencia);
                com.Parameters.AddWithValue("@UltimaModificacion_Incidencia", DateTime.Now);
                com.Parameters.AddWithValue("@Prioridad_Incidencia", inci.PrioridadIncidencia);
                com.Parameters.AddWithValue("@SistemaOperativo_Incidencia", inci.SistemaOperativoIncidencia);

                com.Connection = Conexion.Instance.Con;
                SqlDataReader ejecutar = com.ExecuteReader();
                // TODO terminar esto

                Conexion.Instance.Con.Close();
                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Conexion.Instance.Con.Close();
                return false;
                throw;
            }
        }
        public bool Eliminar(string ID_Incidencia)
        {
            bool resultado = false;
            try
            {
                SqlCommand com = new SqlCommand("DELETE FROM Incidencia WHERE ID_Incidencia = '" + ID_Incidencia + "')");
                SqlDataReader ejecutar = com.ExecuteReader();
                if (ejecutar.Read())
                {
                    resultado = true;
                }
                Conexion.Instance.Con.Close();
                return resultado;
            }
            catch (Exception)
            {
                Conexion.Instance.Con.Close();
                return resultado;
                throw;
            }
        }
    }
}
